﻿using Jay.Sc2.Bof.Lib.Action;
using Jay.Sc2.Bof.Lib.Action.Terran;
using Jay.Sc2.Bof.Lib.State;

namespace Jay.Sc2.Bof.Lib
{
	public class TerranRace : IRace
	{
		public static readonly TerranRace Instance = new TerranRace();
		public string Name { get { return "Terran"; } }
		public IActionSet Actions { get { return ActionSet.Terran; } }
		public IActionSet EconomyActions { get { return ActionSet.TerranEconomy; } }
		public IState InitialState { get { return TerranState.CreateInitialState(); } }
		public IState EmptyState { get { return new TerranState(); } }
		public IAction ActionProduceHarvester { get { return ActionProduceSCV.Instance; } }
		IActionList m_InitialActions;
		public IActionList InitialActions
		{
			get
			{
				if (m_InitialActions == null)
					m_InitialActions = new ActionList(this, new IAction[] { 
						ActionProduceCommandCenter.Instance, 
						ActionProduceSCV.Instance, 
						ActionProduceSCV.Instance, 
						ActionProduceSCV.Instance, 
						ActionProduceSCV.Instance, 
						ActionProduceSCV.Instance 
					});
				return m_InitialActions;
			}
		}
	}
}
